package cn.gson.crm.model.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;

import cn.gson.crm.model.entity.Distribution;
import cn.gson.crm.model.entity.DistributionShadow;
import cn.gson.crm.model.entity.Emp;
import cn.gson.crm.model.entity.Sign;
import cn.gson.crm.model.entity.Student;
import cn.gson.crm.model.entity.Transfer;

import org.apache.ibatis.annotations.Param;
/**
 * 
 * @author Lenovo
 *
 */
@Mapper
public interface StudentMapper {
	/**
	 * 学员信息
	 * @param student
	 * @return
	 */
	List<Student> studentlist(Student student);

	/**
	 * 我的咨询列表
	 * @param delete
	 * @param state
	 * @param name
	 * @param id
	 * @return
	 */
	List<Student> mystudentlist(
			@Param("delete")boolean delete,
			@Param("state")String state,
			@Param("name")String name,
			@Param("id") Long id
			);
	
	
	/**
	 * 学员分配记录
	 * @param distribution
	 * @return
	 */
	List<Distribution> distributionlist(Distribution distribution);
	
	/**
	 * 查询未分配咨询师的学生
	 * @return
	 */
	List<Student> studentdistribution();
	
	/**
	 * 查询所有市场部咨询师
	 * @return
	 */
	List<Emp> emplist();
	
	/**
	 * 通过id查询学生信息
	 * @param id
	 * @return
	 */
	Student studentid(Long id);
	
	/**
	 * 通过id查询员工信息
	 * @param id
	 * @return
	 */
	Emp empid(Long id);
	
	/**
	 * 移交记录
	 * @param transfer
	 * @return
	 */
	List<Transfer> transferList(Transfer transfer);
	
	/**
	 * 移交表中所有学生姓名
	 * @param transfer
	 * @return
	 */
	List<Transfer> transferName();
	
	/**
	 * 查询当前移交学生是否存在
	 * @param id
	 * @return
	 */
	int transfercount(@Param("student")Long id);
	/**
	 * 查询学生姓名是否重复
	 * @param name
	 * @return
	 */
	int countStudent(@Param("name")String name);
	/**
	 * 我的消息记录
	 * @param id
	 * @param state
	 * @return
	 */
	List<Transfer> massageList(@Param("afterEmp")Long id, @Param("state")String state);
	/**
	 * 我的消息数量
	 * @param id
	 * @param state
	 * @return
	 */
	int massageCount(@Param("afterEmp")Long id, @Param("state")String state);
	/**
	 * 查询分配影子表有没有这条记录
	 * @param id
	 * @param name
	 * @return
	 */
	int disshadow(@Param("id")Long id, @Param("name")String name);
	
	/**
	 * 查询今年的招生人数
	 * @param id
	 * @param state
	 * @return
	 */
	int todayNewStudent();
	
	
	/**
	 * 查询今年的毕业人数
	 * @param today
	 * @return
	 */
	int todayGraduateCount();
	
	
	/**
	 * 查询当月的缴款人数
	 * @param today
	 * @return
	 */
	int todayPaymentCount();
	
	/**
	 * 当天的作业提交量
	 * @param today
	 * @return
	 */
	int todayWorkJournalCount(String today);
	/**
	 * 通过分配记录分配咨询师
	 * @param nameid
	 * @param name
	 * @return
	 */
	DistributionShadow disshasave(@Param("nameid")Long nameid, @Param("name")String name);
	
	/**
	 * 将分配影子记录倒序查询
	 * @param fid
	 * @return
	 */
	List<DistributionShadow> dissdparent(Long fid);
	
	/**
	 * 查询签约记录
	 * @param sign
	 * @return
	 */
	List<Sign> signList(Sign sign);
	
	
	
	/**
	 * 统计招生人数
	 * @param sign
	 * @return
	 */
	Integer tjtList(@Param("gender") String gender,@Param("address") String address);
	/**
	 * 查询待分班学员记录
	 * @param student
	 * @return
	 */
	List<Student> famentstuList(Student student);

	/**
	 * 统计咨询师业绩
	 * @param sign
	 * @return
	 */
	List<Sign> emptjtList(Sign sign);
}
